tools: get rid of hardcoded config dirs
authorKeir Fraser <keir.fraser@citrix.com>
Wed, 20 May 2009 14:27:30 +0000 (15:27 +0100)
committerKeir Fraser <keir.fraser@citrix.com>
Wed, 20 May 2009 14:27:30 +0000 (15:27 +0100)
Remove *all* hardcoded "/etc/xen" strings in python code.

Additionally, it removes pygrub_path from osdep.py. Its use has been
replaced with auxbin.pathTo("pygrub").

Signed-off-by: Christoph Egger <Christoph.Egger@amd.com>
20 files changed:
config/StdGNU.mk
config/SunOS.mk
tools/Makefile
tools/Rules.mk
tools/python/Makefile
tools/python/xen/util/auxbin.py
tools/python/xen/util/xsm/acm/acm.py
tools/python/xen/xend/XendConstants.py
tools/python/xen/xend/XendDomainInfo.py
tools/python/xen/xend/XendOptions.py
tools/python/xen/xend/XendPIF.py
tools/python/xen/xend/osdep.py
tools/python/xen/xend/server/blkif.py
tools/python/xen/xend/server/pciquirk.py
tools/python/xen/xm/addlabel.py
tools/python/xen/xm/create.py
tools/python/xen/xm/getlabel.py
tools/python/xen/xm/main.py
tools/python/xen/xm/rmlabel.py
tools/python/xen/xm/tests/test_create.py

index 812d389a281867fc06152f9a677ff59098a8dc66..4ad4e3f580faedb78df18727c3d94abc45325977 100644 (file)
@@ -40,6 +40,14 @@ SBINDIR = $(PREFIX)/sbin
 PRIVATE_PREFIX = $(LIBDIR)/xen
 PRIVATE_BINDIR = $(PRIVATE_PREFIX)/bin
 
+ifeq ($(PREFIX),/usr)
+CONFIG_DIR = /etc
+else
+CONFIG_DIR = $(PREFIX)/etc
+endif
+XEN_CONFIG_DIR = $(CONFIG_DIR)/xen
+XEN_SCRIPT_DIR = $(XEN_CONFIG_DIR)/scripts
+
 SOCKET_LIBS =
 CURSES_LIBS = -lncurses
 PTHREAD_LIBS = -lpthread
index 61fa489c27a6f0ee37e11a85cd538bac16bf8cca..d1f315bad3681d81aab4477d6883f2b741252611 100644 (file)
@@ -34,6 +34,14 @@ SBINDIR = $(PREFIX)/sbin
 PRIVATE_PREFIX = $(LIBDIR)/xen
 PRIVATE_BINDIR = $(PRIVATE_PREFIX)/bin
 
+ifeq ($(PREFIX),/usr)
+CONFIG_DIR = /etc
+else
+CONFIG_DIR = $(PREFIX)/etc
+endif
+XEN_CONFIG_DIR = $(CONFIG_DIR)/xen
+XEN_SCRIPT_DIR = $(PRIVATE_PREFIX)/scripts
+
 SunOS_LIBDIR = /usr/sfw/lib
 SunOS_LIBDIR_x86_64 = /usr/sfw/lib/amd64
 
index d9208ca1b2a894e5aa166d59a06075089cba700e..3209f2f8bd5891ef443c232941d411ad454c8924 100644 (file)
@@ -94,7 +94,9 @@ ioemu-dir-find:
        set -e; \
                $(absolutify_xen_root); \
                PREFIX=$(PREFIX); \
+               XEN_SCRIPT_DIR=$(XEN_SCRIPT_DIR); \
                export PREFIX; \
+               export XEN_SCRIPT_DIR; \
                cd ioemu-dir; \
                ./xen-setup $(IOEMU_CONFIGURE_CROSS)
 
index 7718283544b7405776ddb32d27fa026da0dad20a..53434d51fc331ae6d14beef353948ac7e2f909e4 100644 (file)
@@ -8,10 +8,6 @@ include $(XEN_ROOT)/Config.mk
 export _INSTALL := $(INSTALL)
 INSTALL = $(XEN_ROOT)/tools/cross-install
 
-CONFIG_DIR = /etc
-XEN_CONFIG_DIR = $(CONFIG_DIR)/xen
-XEN_SCRIPT_DIR = $(XEN_CONFIG_DIR)/scripts
-
 XEN_INCLUDE        = $(XEN_ROOT)/tools/include
 XEN_XC             = $(XEN_ROOT)/tools/python/xen/lowlevel/xc
 XEN_LIBXC          = $(XEN_ROOT)/tools/libxc
index eccd652e036fca3dc89f8031f4de11dfe1f6344e..7d9394cca9eef1d479ad0d3e164ecc42ad1ae016 100644 (file)
@@ -23,6 +23,8 @@ genpath:
        echo "LIBEXEC=\"$(LIBEXEC)\"" >> ${xenpath}
        echo "LIBDIR=\"$(LIBDIR)\"" >> ${xenpath}
        echo "PRIVATE_BINDIR=\"$(PRIVATE_BINDIR)\"" >> ${xenpath}
+       echo "XEN_CONFIG_DIR=\"$(XEN_CONFIG_DIR)\"" >> ${xenpath}
+       echo "XEN_SCRIPT_DIR=\"$(XEN_SCRIPT_DIR)\"" >> ${xenpath}
 
 buildpy: genpath 
        CC="$(CC)" CFLAGS="$(CFLAGS)" $(PYTHON) setup.py build
index 867f59ea938e14edcf0e0b487169bf28667ade53..971a38279542100cd8a0e29f461cde00e813bf8d 100644 (file)
@@ -20,6 +20,7 @@ import os
 import os.path
 import sys
 from xen.util.path import SBINDIR,BINDIR,LIBEXEC,LIBDIR,PRIVATE_BINDIR
+from xen.util.path import XEN_CONFIG_DIR, XEN_SCRIPT_DIR
 
 def execute(exe, args = None):
     exepath = pathTo(exe)
@@ -45,3 +46,9 @@ def path():
 
 def libpath():
     return LIBDIR
+
+def xen_configdir():
+    return XEN_CONFIG_DIR
+
+def scripts_dir():
+    return XEN_SCRIPT_DIR
index c1efdfac0db7fb9f321a8afe013d980ddf5b15b9..8ea1b3e2c337d1979db45628165553a448eed9d9 100644 (file)
@@ -31,11 +31,11 @@ from xen.xend import XendConstants
 from xen.xend import XendOptions
 from xen.xend.XendLogging import log
 from xen.xend.XendError import VmError
-from xen.util import dictio, xsconstants
+from xen.util import dictio, xsconstants, auxbin
 from xen.xend.XendConstants import *
 
 #global directories and tools for security management
-install_policy_dir_prefix = "/etc/xen/acm-security/policies"
+install_policy_dir_prefix = auxbin.xen_configdir() + "/acm-security/policies"
 security_dir_prefix = XendOptions.instance().get_xend_security_path()
 policy_dir_prefix = security_dir_prefix + "/policies"
 res_label_filename = policy_dir_prefix + "/resource_labels"
index 6775795bdd5ed9d53ba7f849aeeb2266c0d9943b..b0a7c66abb4a5128974a8a2b6db1191fc1a27d0c 100644 (file)
@@ -16,6 +16,7 @@
 #============================================================================
 
 from xen.xend.XendAPIConstants import *
+from xen.util import auxbin
 
 #
 # Shutdown codes and reasons.
@@ -129,7 +130,7 @@ DEV_MIGRATE_STEP3 = 3
 # VTPM-related constants
 #
 
-VTPM_DELETE_SCRIPT = '/etc/xen/scripts/vtpm-delete'
+VTPM_DELETE_SCRIPT = auxbin.scripts_dir() + '/vtpm-delete'
 
 #
 # Xenstore Constants
index e54ee713dd8ac45be5bfd5fb78c4d17ab9fe7bce..e2482c1fe9bbeeeef32543bd3d357061286e22a0 100644 (file)
@@ -34,12 +34,12 @@ import traceback
 from types import StringTypes
 
 import xen.lowlevel.xc
-from xen.util import asserts
+from xen.util import asserts, auxbin
 from xen.util.blkif import blkdev_uname_to_file, blkdev_uname_to_taptype
 import xen.util.xsm.xsm as security
 from xen.util import xsconstants
 
-from xen.xend import balloon, sxp, uuid, image, arch, osdep
+from xen.xend import balloon, sxp, uuid, image, arch
 from xen.xend import XendOptions, XendNode, XendConfig
 
 from xen.xend.XendConfig import scrub_password
@@ -2914,7 +2914,7 @@ class XendDomainInfo:
         else:
             # Boot using bootloader
             if not blexec or blexec == 'pygrub':
-                blexec = osdep.pygrub_path
+                blexec = auxbin.pathTo('pygrub')
 
             blcfg = None
             disks = [x for x in self.info['vbd_refs']
index edd16221e500e66e3ebf0a309f22c1189aaef201..c5598f048fd4872401c0e7e8af294b69e7bb5795 100644 (file)
@@ -32,6 +32,7 @@ import sys
 
 from xen.xend import sxp, osdep, XendLogging
 from xen.xend.XendError import XendError
+from xen.util import auxbin
 
 if os.uname()[0] == 'SunOS':
     from xen.lowlevel import scf
@@ -40,10 +41,10 @@ class XendOptions:
     """Configuration options."""
 
     """Where network control scripts live."""
-    network_script_dir = osdep.scripts_dir
+    network_script_dir = auxbin.scripts_dir()
 
     """Where block control scripts live."""
-    block_script_dir = osdep.scripts_dir
+    block_script_dir = auxbin.scripts_dir()
 
     """Default path to the log file. """
     logfile_default = "/var/log/xen/xend.log"
@@ -115,7 +116,7 @@ class XendOptions:
     xend_vnc_tls = 0
 
     """x509 certificate directory for QEMU VNC server"""
-    xend_vnc_x509_cert_dir = "/etc/xen/vnc"
+    xend_vnc_x509_cert_dir = auxbin.xen_configdir() + "/vnc"
 
     """Verify incoming client x509 certs"""
     xend_vnc_x509_verify = 0
@@ -355,7 +356,7 @@ class XendOptions:
         s = self.get_config_string('resource-label-change-script')
         if s:
             result = s.split(" ")
-            result[0] = os.path.join(osdep.scripts_dir, result[0])
+            result[0] = os.path.join(auxbin.scripts_dir(), result[0])
             return result
         else:
             return None
@@ -386,7 +387,7 @@ class XendOptions:
 class XendOptionsFile(XendOptions):
 
     """Default path to the config file."""
-    config_default = "/etc/xen/xend-config.sxp"
+    config_default = auxbin.xen_configdir() + "/xend-config.sxp"
 
     """Environment variable used to override config_default."""
     config_var     = "XEND_CONFIG"
index 60524813f3bc7d155988f7ec543c190c71704e88..d6e073e6f38011a2e1b3152c47c7f56d0605c86e 100644 (file)
@@ -25,6 +25,7 @@ from xen.xend.XendBase import XendBase
 from xen.xend.XendPIFMetrics import XendPIFMetrics
 from xen.xend.XendError import *
 from xen.xend import Vifctl
+from xen.util import auxbin
 
 log = logging.getLogger("xend.XendPIF")
 log.setLevel(logging.TRACE)
index 024eab216f6fa586c303b04e5bc4b8800b306541..ce611a2982359bb917aa368aa7b54a973e65fad8 100644 (file)
 import os
 import commands
 
-_scripts_dir = {
-    "Linux": "/etc/xen/scripts",
-    "SunOS": "/usr/lib/xen/scripts",
-}
-
 _xend_autorestart = {
     "NetBSD": True,
     "Linux": True,
     "SunOS": False,
 }
 
-_pygrub_path = {
-    "SunOS": "/usr/lib/xen/bin/pygrub"
-}
-
 _vif_script = {
     "SunOS": "vif-vnic"
 }
@@ -221,9 +212,7 @@ _get_postfork = {
 def _get(var, default=None):
     return var.get(os.uname()[0], default)
 
-scripts_dir = _get(_scripts_dir, "/etc/xen/scripts")
 xend_autorestart = _get(_xend_autorestart)
-pygrub_path = _get(_pygrub_path, "/usr/bin/pygrub")
 vif_script = _get(_vif_script, "vif-bridge")
 lookup_balloon_stat = _get(_balloon_stat, _linux_balloon_stat)
 get_cpuinfo = _get(_get_cpuinfo, _linux_get_cpuinfo)
index 7c4cb8b6bb8c7db2fc680a87d57a527b76f0b819..60e162534f16466f1bdda3c378422d65ddde7e24 100644 (file)
@@ -24,7 +24,7 @@ from xen.util import blkif
 import xen.util.xsm.xsm as security
 from xen.xend.XendError import VmError
 from xen.xend.server.DevController import DevController
-from xen.util import xsconstants
+from xen.util import xsconstants, auxbin
 
 class BlkifController(DevController):
     """Block device interface controller. Handles all block devices
@@ -40,7 +40,7 @@ class BlkifController(DevController):
         if protocol in ('phy', 'file', 'tap'):
             return True
 
-        return os.access('/etc/xen/scripts/block-%s' % protocol, os.X_OK)
+        return os.access(auxbin.scripts_dir() + '/block-%s' % protocol, os.X_OK)
 
 
     def getDeviceDetails(self, config):
index 702c3b2a50fd4e8bd541dafeecb00317e1febaaa..da7aa9a05715fe6055ab08a11d2b5dfc30fc10b4 100644 (file)
@@ -3,10 +3,11 @@ from xen.xend.XendError import XendError, VmError
 import sys
 import os.path
 from xen.xend.sxp import *
+from xen.util import auxbin
 
 QUIRK_SYSFS_NODE = "/sys/bus/pci/drivers/pciback/quirks"
-QUIRK_CONFIG_FILE = "/etc/xen/xend-pci-quirks.sxp"
-PERMISSIVE_CONFIG_FILE = "/etc/xen/xend-pci-permissive.sxp"
+QUIRK_CONFIG_FILE = auxbin.xen_configdir() + "/xend-pci-quirks.sxp"
+PERMISSIVE_CONFIG_FILE = auxbin.xen_configdir() + "/xend-pci-permissive.sxp"
 PERMISSIVE_SYSFS_NODE = "/sys/bus/pci/drivers/pciback/permissive"
 
 class PCIQuirk:
index b4130cc2f2dd9b5003f6c336356e3731df1647e3..45fde491c293ce8c747837ddbf43fdf3ac181d2d 100644 (file)
@@ -24,7 +24,7 @@ import sys
 
 import xen.util.xsm.xsm as security
 from xen.xm.opts import OptionError
-from xen.util import xsconstants
+from xen.util import xsconstants, auxbin
 from xen.xm import main as xm_main
 from xen.xm.main import server
 
@@ -221,7 +221,7 @@ def main(argv):
     if argv[2].lower() == "dom":
         configfile = argv[3]
         if configfile[0] != '/':
-            for prefix in [os.path.realpath(os.path.curdir), "/etc/xen"]:
+            for prefix in [os.path.realpath(os.path.curdir), auxbin.xen_configdir()]:
                 configfile = prefix + "/" + configfile
                 if os.path.isfile(configfile):
                     break
index b663fafd31efd918ec054d841ba0c842434a8524..509915c8305ec8460c6c1afb235dd63e3ce806e6 100644 (file)
@@ -29,7 +29,6 @@ import xmlrpclib
 
 from xen.xend import sxp
 from xen.xend import PrettyPrint as SXPPrettyPrint
-from xen.xend import osdep
 import xen.xend.XendClient
 from xen.xend.XendBootloader import bootloader
 from xen.xend.XendConstants import *
@@ -38,7 +37,7 @@ from xen.util import blkif
 from xen.util import vscsi_util
 import xen.util.xsm.xsm as security
 from xen.xm.main import serverType, SERVER_XEN_API, get_single_vm
-from xen.util import utils
+from xen.util import utils, auxbin
 
 from xen.xm.opts import *
 
@@ -72,7 +71,7 @@ gopts.opt('quiet', short='q',
           use="Quiet.")
 
 gopts.opt('path', val='PATH',
-          fn=set_value, default='.:/etc/xen',
+          fn=set_value, default='.:' + auxbin.xen_configdir(),
           use="Search path for configuration scripts. "
           "The value of PATH is a colon-separated directory list.")
 
@@ -981,7 +980,7 @@ def make_config(vals):
     config_image = configure_image(vals)
     if vals.bootloader:
         if vals.bootloader == "pygrub":
-            vals.bootloader = osdep.pygrub_path
+            vals.bootloader = auxbin.pathTo(vals.bootloader)
 
         config.append(['bootloader', vals.bootloader])
         if vals.bootargs:
index 45c4a7aff41d8fb095af56505f1adf78545fc322..2d26de36c65bcca1988bc4a86eb5b265f3cc57e4 100644 (file)
@@ -20,7 +20,7 @@
 """
 import sys, os, re
 import xen.util.xsm.xsm as security
-from xen.util import xsconstants
+from xen.util import xsconstants, auxbin
 from xen.xm.opts import OptionError
 from xen.xm import main as xm_main
 from xen.xm.main import server
@@ -59,7 +59,7 @@ def get_domain_label(configfile):
     if configfile[0] == '/':
         fd = open(configfile, "rb")
     else:
-        for prefix in [".", "/etc/xen"]:
+        for prefix in [".", auxbin.xen_configdir() ]:
             abs_file = prefix + "/" + configfile
             if os.path.isfile(abs_file):
                 fd = open(abs_file, "rb")
index f33a74f9b6ac5a80f70da7c69e46d23a90fe4b9e..440e8df3c3b426344ede03e4b736203444f4d645 100644 (file)
@@ -55,6 +55,7 @@ from xen.util.xmlrpcclient import ServerProxy
 import xen.util.xsm.xsm as security
 from xen.util.xsm.xsm import XSMError
 from xen.util.acmpolicy import ACM_LABEL_UNLABELED_DISPLAY
+from xen.util import auxbin
 
 import XenAPI
 
@@ -72,7 +73,7 @@ if not hasattr(getopt, 'gnu_getopt'):
     getopt.gnu_getopt = getopt.getopt
 
 XM_CONFIG_FILE_ENVVAR = 'XM_CONFIG_FILE'
-XM_CONFIG_FILE_DEFAULT = '/etc/xen/xm-config.xml'
+XM_CONFIG_FILE_DEFAULT = auxbin.xen_configdir + '/xm-config.xml'
 
 # Supported types of server
 SERVER_LEGACY_XMLRPC = 'LegacyXMLRPC'
index 745350bf176eb6adb8889dd0093a77f13c286c42..7b27ac5c0dfb62e27a459f38fff994ca3cd9e0b1 100644 (file)
@@ -22,7 +22,7 @@ import os
 import re
 import sys
 import xen.util.xsm.xsm as security
-from xen.util import xsconstants
+from xen.util import xsconstants, auxbin
 from xen.util.acmpolicy import ACM_LABEL_UNLABELED
 from xen.xm.opts import OptionError
 from xen.xm import main as xm_main
@@ -81,7 +81,7 @@ def rm_domain_label(configfile):
         fil = configfile
         fd = open(fil, "rb")
     else:
-        for prefix in [".", "/etc/xen"]:
+        for prefix in [".", auxbin.xen_configdir() ]:
             fil = prefix + "/" + configfile
             if os.path.isfile(fil):
                 fd = open(fil, "rb")
index fa173f683652e7c51cf05ae8dcc01f18e9bcec5a..40878128511bc702a610f3fd2e68d94f83f07aaf 100644 (file)
@@ -8,6 +8,7 @@ import xen.xend.XendOptions
 xen.xend.XendOptions.XendOptions.config_default = '/dev/null'
 
 import xen.xm.create
+from xen.util import auxbin
 
 
 class test_create(unittest.TestCase):
@@ -48,7 +49,7 @@ class test_create(unittest.TestCase):
                  'boot'      : 'c',
                  'dhcp'      : 'off',
                  'interface' : 'eth0',
-                 'path'      : '.:/etc/xen',
+                 'path'      : '.:' + auxbin.xen_configdir(),
                  'builder'   : 'linux',
                  'nics'      : -1,
                  'vncunused' : 1,
@@ -99,7 +100,7 @@ on_crash    = 'destroy'
                  'boot'        : 'c',
                  'dhcp'        : 'off',
                  'interface'   : 'eth0',
-                 'path'        : '.:/etc/xen',
+                 'path'        : '.:' + auxbin.xen_configdir(),
                  'builder'     : 'linux',
 
                  'vncunused'   : 1,
@@ -138,7 +139,7 @@ cpu_weight = 0.75
                  'boot'       : 'c',
                  'dhcp'       : 'off',
                  'interface'  : 'eth0',
-                 'path'       : '.:/etc/xen',
+                 'path'        : '.:' + auxbin.xen_configdir(),
                  'builder'    : 'linux',
                  'nics'       : -1,
 
@@ -195,7 +196,7 @@ ne2000=0
                  'boot'        : 'c',
                  'dhcp'        : 'off',
                  'interface'   : 'eth0',
-                 'path'        : '.:/etc/xen',
+                 'path'        : '.:' + auxbin.xen_configdir(),
 
                  'xauthority'  : xen.xm.create.get_xauthority(),
                })